<!DOCTYPE html>
<html class="client-nojs vector-feature-language-in-header-enabled vector-feature-language-in-main-page-header-disabled vector-feature-page-tools-pinned-disabled vector-feature-toc-pinned-clientpref-0 vector-toc-not-available vector-feature-main-menu-pinned-disabled vector-feature-limited-width-clientpref-1 vector-feature-limited-width-content-enabled vector-feature-custom-font-size-clientpref-1 vector-feature-appearance-pinned-clientpref-0 skin-theme-clientpref-day vector-sticky-header-enabled" lang="de" dir="ltr"><head>
<meta charset="UTF-8">
<title>Real-Time Java</title>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link rel="icon" type="image/png" href="./_res_/favicon.png">
<link rel="canonical" href="https://de.wikipedia.org/wiki/Real-Time_Java"> <link href="./_mw_/ext.cite.styles.css" rel="stylesheet" type="text/css">
<link href="./_mw_/ext.wikimediamessages.styles.css" rel="stylesheet" type="text/css">
<link href="./_mw_/skins.vector.icons.css" rel="stylesheet" type="text/css">
<link href="./_mw_/skins.vector.search.codex.styles.css" rel="stylesheet" type="text/css">
<link href="./_mw_/skins.vector.styles.css" rel="stylesheet" type="text/css">
<meta name="ResourceLoaderDynamicStyles" content="">
<link href="./_mw_/ext.gadget.citeRef.css" rel="stylesheet" type="text/css">
<link href="./_mw_/ext.gadget.defaultPlainlinks.css" rel="stylesheet" type="text/css">
<link href="./_mw_/ext.gadget.dewikiCommonHide.css" rel="stylesheet" type="text/css">
<link href="./_mw_/ext.gadget.dewikiCommonLayout.css" rel="stylesheet" type="text/css">
<link href="./_mw_/ext.gadget.dewikiCommonStyle.css" rel="stylesheet" type="text/css">
<link href="./_mw_/ext.gadget.dewikiDarkmode.css" rel="stylesheet" type="text/css">
<link href="./_mw_/ext.gadget.dewikiResponsive.css" rel="stylesheet" type="text/css">
<link href="./_mw_/ext.gadget.specialSearch.css" rel="stylesheet" type="text/css">
<link rel="stylesheet" type="text/css" href="./_mw_/site.styles.css">
<link rel="stylesheet" type="text/css" href="./_mw_/noscript.css">
<link rel="stylesheet" type="text/css" href="./_res_/footer.css">
<link rel="stylesheet" type="text/css" href="./_res_/vector-2022.css">
</head>
<body class="skin--responsive skin-vector skin-vector-search-vue mediawiki ltr sitedir-ltr mw-hide-empty-elt ns-0 ns-subject page-Real-Time_Java rootpage-Real-Time_Java skin-vector-2022 action-view">
<div class="mw-page-container">
<div class="mw-page-container-inner">
<div class="mw-content-container">
<main id="content" class="mw-body">
<header class="mw-body-header vector-page-titlebar">
<h1 id="firstHeading" class="firstHeading mw-first-heading"><span class="mw-page-title-main">Real-Time Java</span></h1>
</header>
<a id="top"></a>
<div id="bodyContent" class="vector-body ve-init-mw-desktopArticleTarget-targetContainer" aria-labelledby="firstHeading" data-mw-ve-target-container="">
<div id="contentSub">
<div id="mw-content-subtitle"></div>
</div>
<div id="mw-content-text" class="mw-body-content mw-content-ltr" lang="de" dir="ltr"><div class="mw-content-ltr mw-parser-output" lang="de" dir="ltr"><p><b>Real-Time Java</b> ist eine Sammlung von <a href="Programmierschnittstelle" title="Programmierschnittstelle">Programmierschnittstellen</a>, welche die <a href="Java_(Technik)" class="mw-redirect" title="Java (Technik)">Java-Technologie</a> um harte <a href="Echtzeit" title="Echtzeit">Echtzeitfähigkeiten</a> erweitert. Diese <i>Real-Time Specification for Java</i> (RTSJ) wurde als <a href="Java_Specification_Request" title="Java Specification Request">Java Specification Request</a> 1 im Rahmen des <a href="Java_Community_Process" title="Java Community Process">Java Community Process</a> entwickelt und als Standard im November 2001 verabschiedet. Aktuell wird an einer erweiterten Version der RTSJ im Rahmen des JSR 282 gearbeitet.<sup id="cite_ref-1" class="reference"><a href="#cite_note-1"><span class="cite-bracket">[</span>1<span class="cite-bracket">]</span></a></sup>
</p>
<div class="mw-heading mw-heading2"><h2 id="Hintergründe"><span id="Hintergr.C3.BCnde"></span>Hintergründe</h2></div>
<p>Einige der üblicherweise als Stärken von Java angesehenen Eigenschaften, wie beispielsweise die untrennbar mit der Sprache verbundene <a href="Garbage_Collection" title="Garbage Collection">Garbage Collection</a>, sowie die native Unterstützung von <a href="Thread_(Informatik)" title="Thread (Informatik)">Threads</a> und <a href="Nebenl%C3%A4ufigkeit" title="Nebenläufigkeit">Nebenläufigkeit</a>, machten eine direkte Verwendung von Java in harten Echtzeitsystemen unmöglich:
</p>
<ul><li>Java unterstützt, wie die meisten der Betriebssysteme, für die Java angeboten wird, kein striktes auf <a href="Multitasking#Präemptives_Multitasking" title="Multitasking">Prioritäten</a> basierendes Threading-Modell. Damit unterstützen die <a href="Lock" title="Lock">Lock</a>-Mechanismen von Java keine Mechanismen zur Vermeidung der <a href="Priorit%C3%A4tsinversion" title="Prioritätsinversion">Prioritätsinversion</a> wie beispielsweise <a href="Priorit%C3%A4tsgrenze" title="Prioritätsgrenze">Prioritätsgrenzen</a> oder <a href="Priorit%C3%A4tsvererbung" title="Prioritätsvererbung">Prioritätsvererbung</a>.</li>
<li>Das Verhalten bestimmter Java Garbage Collectors kann Unterbrechungen unbegrenzter Dauer in der Programmausführung verursachen und untergräbt somit alle Echtzeitgarantien von Javaprogrammen.</li></ul>
<p>Um diese Schwierigkeiten zu meistern, wurde die <i>Real-Time Specification for Java</i> (RTSJ) als <a href="Java_Specification_Request" title="Java Specification Request">Java Specification Request</a> entwickelt. Sie ermöglicht es in Java, die obengenannten Hindernisse zu umgehen, in dem sie ein entsprechendes Threading-Modell einführt und es ermöglicht, die <a href="Java_Virtual_Machine" title="Java Virtual Machine">Java Virtual Machine</a> durch weitere Threading-Modelle zu erweitern. Darüber hinaus definiert sie spezielle Speicherbereiche, welche nicht durch die herkömmliche Garbage Collection bereinigt werden, sondern durch realtimefähige Threads, welche nicht durch die Garbage Collection pausiert werden können.
</p><p>Aktuelle Umsetzungen der RTSJ ermöglichen es, in Java harte und weiche Echtzeitanwendungen zu entwickeln. Zu den bekanntesten Implementierungen gehört die <a href="Referenzimplementierung" title="Referenzimplementierung">Referenzimplementierung</a> von Timesys, <a href="IBM" title="IBM">IBMs</a> <a href="WebSphere" title="WebSphere">WebSphere</a> Real Time, <a href="Sun_Microsystems" title="Sun Microsystems">Sun Microsystems</a> Java SE Real-Time Systems, Aonix PERC und JamaicaVM von aicas.
</p>
<div class="mw-heading mw-heading2"><h2 id="Entwicklung">Entwicklung</h2></div>
<p>Der seit Java 9 bei Servern standardmäßig eingesetzte „Garbage first Garbage Collector“ (G1GC) hat Zielvorgaben für die maximale Länge der Pausen, welche er bis auf seltene Ausnahmen auch erreicht. Damit sind weiche Echtzeitanwendungen in Java möglich.<sup id="cite_ref-2" class="reference"><a href="#cite_note-2"><span class="cite-bracket">[</span>2<span class="cite-bracket">]</span></a></sup>
</p><p>Seit längerem existieren auch Garbage-Collectors, die <a href="Algorithmus" title="Algorithmus">Algorithmen</a> verwenden, deren zeitliches Verhalten vorhersagbar ist und damit auch harte Echtzeit-Anwendungen in Java erlauben.<sup id="cite_ref-3" class="reference"><a href="#cite_note-3"><span class="cite-bracket">[</span>3<span class="cite-bracket">]</span></a></sup><sup id="cite_ref-4" class="reference"><a href="#cite_note-4"><span class="cite-bracket">[</span>4<span class="cite-bracket">]</span></a></sup><sup id="cite_ref-5" class="reference"><a href="#cite_note-5"><span class="cite-bracket">[</span>5<span class="cite-bracket">]</span></a></sup><sup id="cite_ref-6" class="reference"><a href="#cite_note-6"><span class="cite-bracket">[</span>6<span class="cite-bracket">]</span></a></sup>
</p>
<div class="mw-heading mw-heading2"><h2 id="Literatur">Literatur</h2></div>
<ul><li>Eric J. Bruno, Greg Bollella: <cite class="lang" lang="en" dir="auto" style="font-style:italic">Real-Time Java<span dir="auto" style="font-style:normal">™</span> Programming with Java RTS</cite>. Prentice Hall, 2009, ISBN 978-0-13-714298-9 (englisch, <a rel="nofollow" class="external text" href="http://safari5.bvdep.com/9780137153626">bvdep.com</a> [abgerufen am 6. Dezember 2011]).<span class="Z3988" title="ctx_ver=Z39.88-2004&rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook&rfr_id=info:sid/de.wikipedia.org:Real-Time+Java&rft.au=Eric+J.+Bruno%2C+Greg+Bollella&rft.btitle=Real-Time+Java%E2%84%A2+Programming+with+Java+RTS&rft.date=2009&rft.genre=book&rft.isbn=9780137142989&rft.pub=Prentice+Hall" style="display:none"> </span></li>
<li>Peter C. Dibble: <cite class="lang" lang="en" dir="auto" style="font-style:italic">Real-Time Java Platform Programming</cite>. Prentice Hall, 2002, ISBN 978-0-13-028261-3 (englisch).<span class="Z3988" title="ctx_ver=Z39.88-2004&rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook&rfr_id=info:sid/de.wikipedia.org:Real-Time+Java&rft.au=Peter+C.+Dibble&rft.btitle=Real-Time+Java+Platform+Programming&rft.date=2002&rft.genre=book&rft.isbn=9780130282613&rft.pub=Prentice+Hall" style="display:none"> </span></li>
<li>Andrew Wellings: <cite class="lang" lang="en" dir="auto" style="font-style:italic">Concurrent and Real-Time Programming in Java</cite>. John Wiley & Sons, 2004, ISBN 978-0-470-84437-3 (englisch).<span class="Z3988" title="ctx_ver=Z39.88-2004&rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook&rfr_id=info:sid/de.wikipedia.org:Real-Time+Java&rft.au=Andrew+Wellings&rft.btitle=Concurrent+and+Real-Time+Programming+in+Java&rft.date=2004&rft.genre=book&rft.isbn=9780470844373&rft.pub=John+Wiley+%26+Sons" style="display:none"> </span></li>
<li>Benjamin Brosgol, James Gosling, Peter Dibble, Steve Furr, David Hardin, Mark Turnbull: <cite class="lang" lang="en" dir="auto" style="font-style:italic">The Real-Time Specification for Java</cite>. Hrsg.: Gregory Bollella. Addison-Wesley Longman, 2000, ISBN 0-201-70323-8 (englisch).<span class="Z3988" title="ctx_ver=Z39.88-2004&rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook&rfr_id=info:sid/de.wikipedia.org:Real-Time+Java&rft.au=Benjamin+Brosgol%2C+James+Gosling%2C+Peter+Dibble%2C+...&rft.btitle=The+Real-Time+Specification+for+Java&rft.date=2000&rft.genre=book&rft.isbn=0201703238&rft.pub=Addison-Wesley+Longman" style="display:none"> </span></li></ul>
<div class="mw-heading mw-heading2"><h2 id="Weblinks">Weblinks</h2></div>
<ul><li><a rel="nofollow" class="external text" href="http://www.rtsj.org/">Real-Time Specification for Java (RTSJ)</a></li>
<li><a rel="nofollow" class="external text" href="http://jcp.org/en/jsr/detail?id=1">JSR-1</a> und <a rel="nofollow" class="external text" href="http://jcp.org/en/jsr/detail?id=282">JSR-282</a> – die JSRs für Real time Java</li>
<li><a rel="nofollow" class="external text" href="http://www-01.ibm.com/software/webservers/realtime">IBM WebSphere Real Time</a> – eine Implementierung der Real-Time Specification von IBM</li>
<li><a rel="nofollow" class="external text" href="http://www.atego.com/products/aonix-perc/">Aonix Perc</a> – eine alternative Real-Time VM von Atego, basierend auf der Java Standard Edition (nicht RTSJ)</li>
<li><a rel="nofollow" class="external text" href="http://java.sun.com/javase/technologies/realtime/rts/">Sun Java Real-Time System</a> – Real time Java Homepage</li>
<li><a rel="nofollow" class="external text" href="http://www.timesys.com/java/">Timesys RTSJ</a> – Referenzimplementierung und Testsystem von timesys</li>
<li><a rel="nofollow" class="external text" href="http://jrate.sourceforge.net/">jRate (Java Real-Time Extension)</a> – eine Open-Source-Erweiterung des GNU-GCJ-Compilers mit Unterstützung der meisten Features von RTSJ</li>
<li><a rel="nofollow" class="external text" href="https://www.aicas.com/cms/en/JamaicaVM">JamaicaVM</a> – eine Implementierung der Real-Time Specification von aicas</li>
<li><a rel="nofollow" class="external text" href="http://www.oracle.com/us/products/middleware/application-server/jrockit-real-time-ds-068267.pdf">JRockit Real Time</a> (PDF; 62 kB) – Implementierung der Real-Time Specification von Oracle</li>
<li><a rel="nofollow" class="external text" href="http://rtjava.blogspot.com/2009/07/real-time-java-vms.html">Real-Time Java VMs</a> – Liste von Real-Time Java VMs</li>
<li><a rel="nofollow" class="external text" href="http://www.cs.purdue.edu/homes/jv/JTRES05/index.html">JTRES05</a>, <a rel="nofollow" class="external text" href="http://www-users.cs.york.ac.uk/~andy/JTRES06/index.php">JTRES06</a>, <a rel="nofollow" class="external text" href="http://www.vmars.tuwien.ac.at/jtres2007/">JTRES07</a> <a rel="nofollow" class="external text" href="http://pan.vmars.tuwien.ac.at/jtres2008/">JTRES08</a>, <a rel="nofollow" class="external text" href="http://pan.vmars.tuwien.ac.at/jtres2009/">JTRES09</a>, <a rel="nofollow" class="external text" href="http://d3s.mff.cuni.cz/conferences/jtres2010/">JTRES10</a>, <a rel="nofollow" class="external text" href="http://www.artist-embedded.org/artist/JTRES-2011">JTRES11</a> – International Workshop on Java Technologies for Real-time and Embedded Systems</li></ul>
<div class="mw-heading mw-heading2"><h2 id="Einzelnachweise">Einzelnachweise</h2></div>
<ol class="references">
<li id="cite_note-1"><span class="mw-cite-backlink"><a href="#cite_ref-1">↑</a></span> <span class="reference-text"><a rel="nofollow" class="external free" href="https://jcp.org/en/jsr/detail?id=282">https://jcp.org/en/jsr/detail?id=282</a></span>
</li>
<li id="cite_note-2"><span class="mw-cite-backlink"><a href="#cite_ref-2">↑</a></span> <span class="reference-text"><a rel="nofollow" class="external autonumber" href="https://www.oracle.com/technical-resources/articles/java/g1gc.html">[1]</a> Garbage First Garbage Collector Tuning, Monica Beckwith, August 2013</span>
</li>
<li id="cite_note-3"><span class="mw-cite-backlink"><a href="#cite_ref-3">↑</a></span> <span class="reference-text"><a rel="nofollow" class="external text" href="https://researcher.watson.ibm.com/researcher/view_group_subpage.php?id=175">Metronome-GC-Algorithmus</a> für harte Echtzeit-Java-Anwendungen; IBM; abgerufen am 12. Juni 2014</span>
</li>
<li id="cite_note-4"><span class="mw-cite-backlink"><a href="#cite_ref-4">↑</a></span> <span class="reference-text"><a rel="nofollow" class="external autonumber" href="https://www.ibm.com/docs/en/wxs/8.6.1?topic=time-websphere-real-in-websphere-application-server">[2]</a> WebSphere Real Time in WebSphere Application Server</span>
</li>
<li id="cite_note-5"><span class="mw-cite-backlink"><a href="#cite_ref-5">↑</a></span> <span class="reference-text"><a rel="nofollow" class="external free" href="https://www.azul.com/products/components/pgc/">https://www.azul.com/products/components/pgc/</a></span>
</li>
<li id="cite_note-6"><span class="mw-cite-backlink"><a href="#cite_ref-6">↑</a></span> <span class="reference-text"><a rel="nofollow" class="external autonumber" href="https://wiki.openjdk.java.net/display/zgc">[3]</a> The Z Garbage Collector - Sub-millisecond max pause times</span>
</li>
</ol></div><!--htdig_noindex--><div><div class="zim-footer">
Dieser Artikel wurde von <a class="external text" title="Zuletzt bearbeitet am 2024-11-07" href="https://de.wikipedia.org/wiki/?title=Real-Time_Java&oldid=250136639">Wikipedia</a> herausgegeben. Der Text ist unter <a class="external text" href="https://creativecommons.org/licenses/by-sa/4.0/deed.de">Creative Commons Attribution-Share Alike 4.0</a> verfügbar, sofern nicht anders angegeben. Für die Mediendateien können zusätzliche Bedingungen gelten.
</div>
</div><!--/htdig_noindex--></div>
</div>
</main>
</div>
</div>
</div>
<script src="./_webp_/webpHandler.js"></script>
</body></html>